LINQ (Language Integrated Query) ব্যবহার করার সময়, আপনি ফিল্টারিং এবং প্রজেকশন একত্রে ব্যবহার করে আরও কার্যকরী এবং জটিল কুয়েরি তৈরি করতে পারেন।
where
ক্লজের মাধ্যমে করা হয়।এই দুটি কৌশল একত্রে ব্যবহার করলে, আপনি একটি ডেটাসেট থেকে নির্দিষ্ট শর্ত পূরণকারী তথ্য নির্বাচন করতে পারবেন এবং সেই তথ্যের কিছু অংশ বা রূপান্তরিত সংস্করণ প্রদর্শন করতে পারবেন।
LINQ এর where
ক্লজ এবং select
ক্লজ ব্যবহার করে ফিল্টারিং এবং প্রজেকশন একত্রে করা যায়। নিচে একটি উদাহরণ দেয়া হল যেখানে একটি লিস্ট থেকে even numbers ফিল্টার করা হয়েছে এবং তারপর তাদের স্কয়ার (square) নেয়া হয়েছে।
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Filter (even numbers) এবং Projection (square) একত্রে ব্যবহার
var result = from num in numbers
where num % 2 == 0 // ফিল্টারিং: even numbers
select num * num; // প্রজেকশন: স্কয়ার
foreach (var square in result)
{
Console.WriteLine(square); // Output: 4, 16, 36, 64, 100
}
এখানে:
where num % 2 == 0
শর্তটি ফিল্টারিং করতে ব্যবহৃত হয়েছে, যার মাধ্যমে শুধুমাত্র even numbers নির্বাচন করা হয়েছে।select num * num
হল প্রজেকশন, যা নির্বাচন করা সংখ্যাগুলোর স্কয়ার বের করছে।ধরা যাক, আমাদের কাছে একটি Employee
ক্লাস আছে এবং আমরা একটি তালিকা থেকে age 30 এর বেশি এমন কর্মীদের নাম এবং বয়স বের করতে চাই।
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
public string Position { get; set; }
}
List<Employee> employees = new List<Employee>
{
new Employee { Name = "Alice", Age = 35, Position = "Manager" },
new Employee { Name = "Bob", Age = 28, Position = "Developer" },
new Employee { Name = "Charlie", Age = 42, Position = "CEO" },
new Employee { Name = "David", Age = 25, Position = "Intern" },
};
// Filter (age > 30) এবং Projection (Name এবং Age) একত্রে ব্যবহার
var result = from emp in employees
where emp.Age > 30 // ফিল্টারিং: age > 30
select new { emp.Name, emp.Age }; // প্রজেকশন: Name এবং Age
foreach (var emp in result)
{
Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}");
}
এখানে:
where emp.Age > 30
শর্তটি ফিল্টারিং করতে ব্যবহৃত হয়েছে, যার মাধ্যমে শুধুমাত্র 30 এর বেশি বয়সের কর্মী নির্বাচন করা হয়েছে।select new { emp.Name, emp.Age }
হল প্রজেকশন, যা শুধুমাত্র কর্মীর নাম এবং বয়স রিটার্ন করছে।আউটপুট:
Name: Alice, Age: 35
Name: Charlie, Age: 42
আপনি একাধিক শর্তও যোগ করতে পারেন, যেমন কর্মীর বয়স 30 এর বেশি হতে হবে এবং তার পদের নাম Manager অথবা CEO হতে হবে। এক্ষেত্রে ফিল্টারিং এবং প্রজেকশন একত্রে ব্যবহার করা হবে।
var result = from emp in employees
where emp.Age > 30 && (emp.Position == "Manager" || emp.Position == "CEO") // একাধিক শর্ত
select new { emp.Name, emp.Age, emp.Position };
foreach (var emp in result)
{
Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}, Position: {emp.Position}");
}
আউটপুট:
Name: Alice, Age: 35, Position: Manager
Name: Charlie, Age: 42, Position: CEO
এখানে:
where emp.Age > 30 && (emp.Position == "Manager" || emp.Position == "CEO")
একাধিক শর্তে ফিল্টারিং করা হয়েছে।select new { emp.Name, emp.Age, emp.Position }
দ্বারা প্রজেকশন করা হয়েছে, যাতে কর্মীর নাম, বয়স এবং পদের নাম রিটার্ন করা হয়।LINQ এ ফিল্টারিং এবং প্রজেকশন একত্রে ব্যবহার করা ডেটা কুয়েরি করার একটি শক্তিশালী উপায়। ফিল্টারিং (যেমন where
ক্লজ ব্যবহার করে) আপনাকে নির্দিষ্ট শর্তে ডেটা নির্বাচন করতে সাহায্য করে, এবং প্রজেকশন (যেমন select
ক্লজ ব্যবহার করে) আপনাকে ডেটার নির্দিষ্ট অংশ বা রূপান্তরিত ডেটা প্রাপ্ত করতে সহায়তা করে। একত্রে এই দুটি কৌশল ব্যবহার করলে, আপনি খুবই কার্যকরী এবং শক্তিশালী ডেটা কুয়েরি তৈরি করতে পারবেন।
common.read_more